[Go] 環境安裝與設定
前言
本篇用於記錄Go的安裝、環境設定等前置工作。
安裝Go
Mac OSX的話可以直接從Terminal用Homebrew進行安裝:
1 | |
或是透過官方下載
Go會在系統內預設一個專屬於放置所有Go專案的資料夾
查看相關資訊及設定
查看版本
1 | |
查看Go語言的環境變數與使用工具的配置等資訊。
1 | |
執行指令後可以看到許多相關資訊
查看Go工作目錄
go命令仰賴一個重要的環境變數:GOPATH,為Go的工作目錄,集中管理code, package和執行檔,執行下面的指令可以看到目前go的工作目錄
1 | |
或是執行以下方法
1 | |


1 | |
如果想要在非預設工作區的路徑工作,那麼你需要設定GOPATH環境變數指向那個目錄
GOPATH 路徑問題

GOROOT
Golang主程式安裝的位置
設置的環境變數
如果是bash中設置
1 | |
使修改立刻生效
1 | |
編譯成二元檔
執行go build將檔案進compile成二元的執行檔(給機器讀的)
執行為執行檔
如:./main: 執行名為main 的執行檔
查看編譯後的二進制檔案
指令: ls -l
Packages
為該檔案的標題,同時也表示該檔案的內容摘要,必須寫在第一行。package main代表這個檔案內容標題為main,這是Go內建的規則,在執行.go的程式時,一定要執行名稱為main的package,若沒有按照規則,執行程式會出現以下錯誤訊息:
重要觀念:
- Packages: 每個 Go 程式都是由package組成的,為了方便維護,盡量將package名稱和目錄名稱一致
圖片來源
自定義一個package
Go可以自己定義一個package,在主要檔案引入該package時,加入import該package的資料夾名稱,而自定義的package若要匯出給其他使用,先定義該檔案下的package名稱、函式名稱。
若是自定義的檔案名稱,funtion名稱必須要是大寫。
範例:
若今天要自己定義一個package,在src目錄下建立名為add的資料夾名稱,並在其資料夾底下建立add.go的檔案,檔案內容如下add.go
1 | |
main.go匯入add
1 | |
- package 有兩種:執行用的package、函式庫的package

比較

函式庫的package
- 不可被編譯,但可被不同專案引入
- package名可以自訂
- function名可以自訂,但必須要大寫
執行用的package
- 用於執行整支程式
- 不可被引入
- 需有名為
main的package名 - 需有名為
main的function名
匯入模組
import 套件名稱
fmt為format縮寫的套件名稱,主要用於調整及顯示內容。也可自訂的package名稱。
Go預設搜尋package是從src目錄底下開始搜尋
import自定義package時注意的點
- 由於import只能指定資料夾,無法指定檔案
- 同個資料夾底下只能有一個package,如:資料夾底下所有檔案的package名稱都統一是test_package
檔案主要執行的函式
若檔案內的package名稱是main,則一定要有一個是main名稱的function作為執行的函式。
若沒有的話,會出現錯誤訊息:
除了main之外,也可自定義其他funcion,但這些function不會主動執行,而是需要在main function內進行呼叫。
如下行範例
1 | |
一次執行同個資料夾下多個.go檔案
當同個資料夾下有多個.go檔案時,在其中一個程式裡面呼叫其他檔案所定義的函式可以不需要import該檔案而直接呼叫,並執行
1 | |
範例
假設今天名為test的資料夾下分別有一個main.go及test.go檔
test.go檔內的程式碼:
1 | |

main.go檔內的程式碼:
1 | |

main.go檔內的程式碼在不引入test.go檔的情況下執行go run *.go時的執行結果:

成功呼叫test.go檔案裡面的test()函式。
但是!!!!
如果單獨執行main.go會出現undefined: test的錯誤訊息
原因:
go在run之前會先進行編譯操作,而在此處的編譯它只會以這個main.go為準,導致其他幾個引用文件中的方法出現找不到的情況(但採用go build的方式又不一樣,go會自動找引用文件並打包)
